home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tiger Disk 6
/
Tiger_Disk_006_19xx_Tiger-Crew-Disk_de_Side_B.d64
/
10 mk
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2023-02-26
|
6KB
|
167 lines
8 clr
10 u$="[197][197][197][197][197][197][197][197][197][197]":o$="[164][164][164][164][164][164][164][164][164]"
100 rem beispiel 1
101 data 162,0,189,72,3
102 data 32,210,255,232,224
103 data 19,208,245,96,147
104 data 83,89,78,84,65
105 data 88,32,73,83,84
106 data 32,84,79,76,76
107 data 32,33,13
108 rem beispiel 2
109 data 162,17,169,197,32
110 data 210,255,202,208,250
111 data 96
112 rem beispiel 3
113 data 169,147,32,210,255
114 data 162,65,138,32,210
115 data 255,169,41,32,210
116 data 255,169,13,32,210
117 data 255,232,224,85,208
118 data 237,96
200 print"[147][164][164][164]";o$;o$;o$;o$:print"syntax-lehrgang 'maschinensprache' (10)
210 [153]"totototo";o$;o$:[153]"2.1. bildschirmausgabe
220 print"2. ausgabe mit der printroutine des be-
230 [153]" triebssystems
240 print"etwas einfacher als die direkte ausgabe
250 [153]"auf dem bildschirm ist die ausgabe mit
260 print"der printroutine des betriebssystems.
270 [153]"man erkauft diesen vorteil jedoch mit
280 print"einer geringeren geschwindigkeit (nur
290 [153]"beim 8000'er etwa gleich).
300 restore:fori=0to70:readx:poke826+i,x:next
310 i=1:gosub5000:ifflthen200
400 print"[147]die printroutine wird mit 'jsr $ffd2'":printtab(28);u$
410 print"aufgerufen (dezimal: 65490). sie druckt
420 [153]"das im ac stehende zeichen dorthin, wo
430 print"der cursor sich befindet und setzt die
440 [153]"cursoradresse um 1 weiter. das naechste
450 print"zeichen wird daher automatisch hinter
460 [153]"das erste gedruckt.
470 print"die cursorsteuerbefehle koennen wie ge-
480 [153]"woehnlich verwendet werden.
490 print"die zeichen im ac muessen im ascii-code":printtab(29);u$
500 print"sein.
520 i[178]2:[141]5000:[139]fl[167]200
600 [153]"loadbeispiele:":[153]u$
605 [153]"tocmd1wait. besonders einfach ist das loeschen
610 print"des bildschirmes:
615 [153]" lda #$93 'clr' in ac
620 print" jsr $ffd2 print
630 [153]"einfacher geht's doch kaum, oder ?
640 print"[164][157]2[146]. cursor in linke obere ecke setzen,
650 [153]"ohne bildschirm zu loeschen:
660 print" lda #$13 'home' in ac
670 [153]" jsr $ffd2 print
720 i=3:gosub5000:ifflthen400
800 print"[147][164][157]3[146]. mit 'return' wird der cursor auf
805 [153]"den naechsten zeilenanfang gesetzt:
810 print" lda #$0d 'return' in ac
815 [153]" jsr $ffd2 print
820 print"statt 'return' findet man auch oft 'cr'
830 [153]"es bedeutet 'car return', also soviel
840 print"wie 'wagenruecklauf'.
930 i[178]4:[141]5000:[139]fl[167]600
1000 [153]"loadsoll text ausgedruckt werden, so legt
1010 print"man wieder wie bei der direkten ausgabe
1020 [153]"eine liste an, nur diesmal in ascii.
1030 print"die cursorsteuerungen packt man dabei
1040 [153]"natuerlich gleich mit in die liste.
1050 print"eine solche liste koennte beispielswei-
1060 [153]"se so aussehen:
1130 i=5:gosub5000:ifflthen800
1200 print"[147] adresse inhalt zeichen
1210 [129]i[178]0[164]18:[153]" n+"[202]([196](i)[170]" ",2,2)" $ ' 'on"
1230 [153][163]15)[202]("9353594e5441582049535420544f4c4c20210d",2[172]i[170]1,2);
1240 [153][163]23)[202](" syntax ist toll ! ",i[170]1,1):[130]
1250 [153][163]20)"on'return'"[163]21)"'clr'"
1320 i[178]6:[141]5000:[139]fl[167]1000
1400 [153]"loadvor diese texttabelle schreiben wir ein
1410 print"programm, das in einer schleife nach-
1420 [153]"einander die zeichen in den ac laed und
1430 print"diese mit einem unterprogrammaufruf an
1440 [153]"die printroutine uebergibt.
1450 print"wohlgemerkt: wohin der text geschrieben":printtab(13)"[197][197][197][197][197]
1455 [153]"wird, ist in der tabelle durch die mit-":[153][163]10)u$"valvalvalval"
1460 [153]"eingebauten cursorsteuerungen schon ge-
1470 print"nau festgelegt!
1480 [153]"hier das programm:
1510 i=7:gosub5000:ifflthen1200
1600 print"[147][176][192] ldx #$00 zaehler auf 0
1610 [153]"(NULL)cmd(NULL) lda n,x zeichen in ac
1620 print"[221][157][221] jsr $ffd2 print
1625 [153]"(NULL)cmd(NULL) inx x=x+1
1630 print"[221][157][221] cpx #$13 x=19?
1635 [153]"(NULL)cmd/_ bne $f5 nein: naechstes zeichen
1680 print" rts
1685 [153]"ueberzeugen sie sich, dass der abbruch
1690 print"bei x=$13 (dezimal=19) erfolgen muss !
1700 [153]"nun eine demonstration:
1710 i=8:gosub5000:ifflthen1400
1800 sys826:forw=0to500:next
1810 print"schoen - es funktioniert. der text in
1820 [153]"diesem beispiel ist natuerlich nur kurz
1830 print"aber er laesst sich prinzipiell belie-
1840 [153]"big verlaengern. die zeile 'cpx #$13'
1850 print"ist dann entsprechend abzuaendern.
1860 [153]"wenn sie das programm studieren oder
1870 print"veraendern wollen: es steht ab 826 im
1880 [153]"ram.
1910 i=9:gosub5000:ifflthen1600
2000 print"[147]ein aergernis bei dieser methode sind
2005 [153]"laengere folgen desselben zeichens, wie
2010 print"z.b.bei unterstreichungen, einrahmenden
2020 [153]"linien etc. hier legt man besser keine
2030 print"tabelle an, sondern laesst das zeichen
2040 [153]"von einer gesonderten schleife drucken.
2050 print"wollen wir beispielsweise den text des
2055 [153]"letzten beispiels unterstreichen, so
2070 print"muessen wir 17 mal das zeichen '[197]' aus-
2080 [153]"drucken. das macht folgendes programm:
2110 i=10:gosub5000:ifflthen1800
2200 print"[147] ldx #$11 zaehler = 17
2220 [153]" lda #$c5 'val' in ac
2230 print"[176][192] jsr $ffd2 print
2240 [153]"(NULL)cmd(NULL) dex x=x-1
2250 print"[221][157][173]_ bne $fa x=0?
2260 [153]" rts
2270 print"dieses programm ist ab 859 gespeichert.
2280 [153]"wir rufen nun zuerst den beispieltext
2290 print"mit sys (826) und dann die obige unter-
2295 [153]"streichungsroutine mit sys (859) auf:
2310 i=11:gosub5000:ifflthen2000
2400 sys826:sys859:forw=0to999:next
2410 print"^"
2420 print"zu beachten ist, dass der cursor jetzt
2430 [153]"hinter dem letzten 'val' steht, also dort
2440 print"wo der pfeil hinzeigt. der naechste
2450 [153]"printbefehl macht daher an dieser stel-
2460 print"le weiter !
2470 [153]"nochmals die vorteile dieser methode:
2480 print"ascii-code,bequeme programmierung, ein-":printu$u$u$"[197][197][197][197][197][197][197][197][197]"
2490 print"fache cursorsteuerung.":printu$u$"[197][197][197][197]"
2510 i=12:gosub5000:ifflthen2200
2600 print"[147]aufgaben:":printu$
2620 print"1. schreiben sie folgenden basic-befehl
2630 [153]"als maschinenprogramm:
2640 a$=chr$(34):print"'print"a$"[147]"a$";tab(10);"a$"aufgabe 1"a$"'"
2660 print"2. ebenso diesen:
2670 [153]"'print"a$"load"a$";spc(10);"a$"aufgabe 1"a$"'"
2690 [153]"3. schreiben sie ein pgm,das an den an-
2700 print"fang der ersten zeile 'a)' schreibt, an
2705 [153]"den der zweiten 'b)', etc bis zeile 20.
2710 i=13:gosub5000:ifflthen2400
2800 sys870:forw=0to500:next
2810 print"eine etwas ausgefallene loesung fuer
2820 [153]"aufgabe 3 finden sie ab 870 im ram.
2910 print"- seite 14 - <+> [145][164][164][164][164][157][157][157][157]ende[146] <-> von vorne"
3060 gosub5020:onflgoto0
3080 sys870:end:run
5000 rem umblaettern
5010 print" - seite";i;"- <+> weiter <-> zurueck";
5020 fori=0to11:getx$:next
5030 getx$:ifx$=""then5030
5040 ifx$="+"thenfl=0:return
5050 ifx$="-"thenfl=1:return
5060 goto5030